Computing resource service providers leverage large-scale networks of servers and storage devices to enable their customers to execute a variety of applications and web services. Often, the computing resource service providers provide multiple types of resources that the customers can utilize together in support of an application stack. This remote, distributed computing model allows the customers to efficiently and adaptively satisfy their computing needs without having to host and maintain the computing infrastructure themselves. However, with the growing use of virtual resources, customers encounter situations, such as unanticipated load and traffic spikes, to which a fixed set of virtual resources has difficulty accommodating. Moreover, often when one resource type of an application stack needs to be scaled in response to the occurrence of such situations, other types of resources of the application stack may also need to be scaled in tandem. Current resource scaling technologies, however, are unable to accommodate automatic tandem scaling of different resource types. Furthermore, determining when and how much to scale is currently a time-consuming manual process that is susceptible to error.